Skip to content

Conversation

@kinyoklion
Copy link
Member

Adds support for FDv2 fallback and recovery.

This doesn't add support for fallback to FDv1.
It also does not finish data source status support.

It does some refactoring to limit the complexity of the FDv2DataSource by moving some implementation details regarding synchronizer state handling and conditions out of its implementation.

@kinyoklion kinyoklion changed the base branch from main to rlamb/connect-headers-to-data-sources January 23, 2026 23:43

@Override
public void inform(FDv2SourceResult sourceResult) {
// Time-based recovery.
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We may need to discuss the spec. My interpretation is that the synchronizer just needs to run for the recovery time, not that it needs to be in any specific state.

Considering the fallback time is less than the recovery time, if the data source is in a bad state it will fallback before recovering.

The question is if we care about recovering near having received a changeset. Or if we want changesets to reset the time.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A condition completes when the conditions requirements are met. It is informed by being fed the data source changes. If doesn't wrap the data sources themselves, because that increases complexity of handling the asynchronous nature, and doesn't clearly separate the responsibility.

A condition could complete inside an inform callback, in which case the state change will be caught in the next loop pass.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is just a move to a new file.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants